嗨嗨~我是嚮導
昨天已經介紹完運算子了
今天要來講講主控台應用程式的輸入跟輸出
之前我們已經用過Write/WriteLine來進行輸出了
那我們今天一樣來簡單介紹一下輸入跟輸出會用到的方法
輸出的話一樣有Read跟ReadLine
Console類別的方法 | 說明 |
---|---|
Write | 將輸出串流(Output Stream)由指定的輸出裝置(預設是螢幕)顯示出來。 |
WriteLine | 將輸出串流(Output Stream)及換行控制字元(Carriage return)由指定的輸出裝置(預設是螢幕)顯示出來。 |
Read | 由指定輸入裝置(預設是鍵盤)將鍵入的一個字元讀進來形成一個輸入串流(Input Stream)並放入指定的變數。 |
ReadLine | 由指定輸入裝置(預設是鍵盤)將鍵入的一行字串讀進來形成一個輸入串流(Input Stream)並放入指定的變數。也就是ReadLine()方法允許接受一連串的輸入串流(一行字元)直到按下Enter。 |
那我們簡單的實作一下吧
string Name;
Console.Write("輸入名子:");
Name = Console.ReadLine();
Console.WriteLine("你好阿~" + Name);
最後最後結合上次學到的算術運算子來做個實作
有X跟Y兩個浮點數輸入
輸入後按下Enter
要分別顯示X+Y、X-Y、X*Y、X/Y跟X%Y
float X, Y;
Console.Write("輸入數字X:");
X = int.Parse(Console.ReadLine());
Console.Write("輸入數字Y:");
Y = int.Parse(Console.ReadLine());
Console.WriteLine(X + "+" + Y + "=" + (X + Y));
Console.WriteLine(X + "-" + Y + "=" + (X - Y));
Console.WriteLine(X + "*" + Y + "=" + (X * Y));
Console.WriteLine(X + "/" + Y + "=" + (X / Y));
Console.WriteLine(X + "%" + Y + "=" + (X % Y));
再來之後我們再進行輸出時,也會希望格式好看(?
比如...醬
那我們要怎麼進行格式化輸出呢?
讓我們看看吧!
字元 | 功能 |
---|---|
C或c | 以貨幣方式顯示資料,以$開頭 |
Dn或dn | 以指定n位數顯示十進位資料,空白處補0 |
E或e | 以指數方式顯示資料 |
Fn或fn | 以小數有n位來顯示資料 |
G或g | 以一般格式顯示 |
N或n | 使用千位符號但不包含$符號,若為N1表保留小數至第一位,若為N或N2都保留小數至第二位 |
X或x | 資料以16進制顯示 |
範例:
int num1 = 123456, num2 = -123456;
double num3 = 987.654, num4 = -987.654;
Console.WriteLine("num1=" + num1 + " num2=" + num2 + " num3=" + num3 + " num4=" + num4);
Console.WriteLine("num3 num4的C/c3格式:");
Console.WriteLine("num3= {0:C} num4={1:c3}", num3, num4);
Console.WriteLine("num1 num2的D9/d3/D格式:");
Console.WriteLine("num1= {0:D9} num2={1:d3} num2={2:D}", num1, num2, num2);
Console.WriteLine("num3 num4的E/e2格式:");
Console.WriteLine("num3= {0:E} num4={1:e3}", num3, num4);
Console.WriteLine("num3 num4的F1/f格式:");
Console.WriteLine("num3= {0:F1} num4={1:f}", num3, num4);
Console.WriteLine("num3 num4的G3/g/G/g4格式:");
Console.WriteLine("num3= {0:G3} num4={1:g} num3= {0:G} num4={1:g4}", num3, num4);
Console.WriteLine("num1 num2的N3/n格式:");
Console.WriteLine("num1= {0:N3} num2={1:n}", num1, num2);
Console.WriteLine("num1 num2的X格式:");
Console.WriteLine("num1= {0:X} num2={1:x}", num1, num2);
但...各位勇者是不是發現
我剛剛的示範好像跟上面說的不一樣啊!
等等喔~因為還有一個叫做自訂數值格式輸出字串
格式字元 | 功能 |
---|---|
0:零值預留位置 | 若顯示數值的位數比設定格式的位數小,資料向右靠齊顯示,未用到的位數以0取代。若數值資料比設定格式位數大,則以該數值大小直接顯示。 |
#:數字預留位置 | 若顯示數值的位數比設定格式的位數小,資料向右靠齊顯示,未用到的位數以空白取代。若數值資料比設定格式位數大,則以該數值大小直接顯示。 |
.:小數點 | 由小數點右邊的位數來決定小數的位數,若資料的小數位數超過設定的小數位數,會做四捨五入。小數前後可使用#或0格式字元。 |
,:千位分隔符號和數值縮放 | 使用千位分隔符號,若千位分隔符號放一個在最後面,該數值會除以1000顯示,連續兩個千位分隔字元除以1000000,以此類推。 |
%:百分比預留位置 | 使用%格式字元會將數值除以100顯示。 |
E:科學標記法 | 使用科學記號會以指數方式顯示。 |
\:溢出字元 | 使用溢出字元,接在溢出字元後面的字元會被當作指定的特殊意義來處理。 |
'ABC'|"ABC":常值字串 | 使用單/雙引號,會將括住的字串複製到輸出字串內直接顯示出來。 |
範例:
double m1 = 0912345678, m3 = -2.455, m4 = 100000000, m5 = 0.075, m6 = 0.512458;
int m2 = -12345;
Console.WriteLine("1. " + m1.ToString("(0#) ########"));
Console.WriteLine("2. " + m2.ToString("######"));
Console.WriteLine("3. " + m2.ToString("000000"));
Console.WriteLine("4. " + m3.ToString("#.##"));
Console.WriteLine("5. " + m3.ToString("0.00000"));
Console.WriteLine("6. " + m3.ToString("00.00"));
Console.WriteLine("7. " + m4.ToString("#,#"));
Console.WriteLine("8. " + m4.ToString("#,") + "k");
Console.WriteLine("9. " + m4.ToString("#,,") + "M");
Console.WriteLine("10. " + m4.ToString("#,#,") + "k");
Console.WriteLine("11. " + m5.ToString("#0.##%"));
Console.WriteLine("12. " + m5.ToString("#0.##%"));
Console.WriteLine("13. " + m4.ToString("#0.##E+0"));
Console.WriteLine("14. " + m1.ToString("[0###-###-###]"));
再來最後,如果我們要插入'、"、\
等等字元的話,該怎麼辦呢?
溢出序列字元 | 說明 |
---|---|
\' | 插入一個單引號。 |
\" | 插入一個雙引號。 |
\\ | 插入一個倒斜線,當程式定義檔案路徑時有用。 |
\a | 觸發一個系統的警告聲。 |
\b | 退一格。 |
\n | 換一行。 |
\r | 游標移到目前該行最前面。 |
\t | 插入水平跳格到字串中。 |
\udddd | 插入一個Unicode字元。 |
\v | 插入垂直跳格到字串中。 |
\0 | 代表一個空字元。 |
簡單示範一下:
string str1 = "勇者說:\"嗨!C#世界\"";
Console.Write("\t" + str1);
Console.WriteLine("\t" + "美好世界我來了!");
Console.Write("\n我是OOXX\n");
Console.WriteLine("D:\\VS 2022");
Console.WriteLine(@"D:\VS 2022");
今天就先到這邊打住吧,大家掰掰~~
參考資料:
Visual C# 2015程式設計經典